package net.starwifi.duobao.utils;
import net.starwifi.duobao.entity.Ggljp;

import java.util.*;

/**
 * Created by Administrator on 2015/11/26.
 */
public class WinningUtils {


    public static String getDays() {
        return null;
    }

    /**
     * 8位随机数
     *
     * @return
     */
    public static String jackpot() {

        Random rand = new Random();
        int i = rand.nextInt(100000000);
        String auto = Integer.toString(i);
        return auto;
    }
    public static void main(String[] args){

    }
    /**
     * 抽奖
     *
     * 		物品的索引
     */
    public static Ggljp lottery(List<Ggljp> list) {
        List<Double> orignalRates = new ArrayList<Double>();

        Collections.shuffle(list);
        Ggljp ggljp = new Ggljp();
       // ggljp = list.get(list.size()-1);

        if (list.size() > 0) {
            for (Ggljp ggljps : list) {
                orignalRates.add(ggljps.getGl());

            }
        }
//        // 奖品概率集合
//
//        orignalRates.add((Double) (map.get(PrizeLevel.ONE.getGl())));
//        orignalRates.add((Double) (map.get(PrizeLevel.TWO.getGl())));
//        orignalRates.add((Double) (map.get(PrizeLevel.THREE.getGl())));
//        orignalRates.add((Double) (map.get(PrizeLevel.FOUR.getGl())));
//        orignalRates.add((Double) (map.get(PrizeLevel.FIVE.getGl())));
//        orignalRates.add((Double) (map.get(PrizeLevel.SIX.getGl())));

        if (orignalRates.isEmpty()) {
            return null;
        }

        int size = orignalRates.size();

        // // 计算总概率，这样可以保证不一定总概率是1
        // double sumRate = 0d;
        // for (double rate : orignalRates) {
        // sumRate += rate;
        // }

        // 计算每个物品在总概率的基础下的概率情况
        List<Double> sortOrignalRates = new ArrayList<Double>();
        Double tempSumRate = 0d;
        for (double rate : orignalRates) {
            tempSumRate += rate;
            sortOrignalRates.add(tempSumRate);
        }

        if (tempSumRate < 1) {
            sortOrignalRates.add(1.0d);
        }

        System.out.println(sortOrignalRates);

        // 根据区块值来获取抽取到的物品索引
        double nextDouble = Math.random();
        sortOrignalRates.add(nextDouble);
        Collections.sort(sortOrignalRates);
        // 获取当前随机数对应区间中的下标
        int index = sortOrignalRates.indexOf(nextDouble);
        // 当前中奖奖品信息
        if(index+1<=list.size()){
            ggljp = list.get(index);
            int number = ggljp.getKc();
            if (number <= 0) {
                return null;
            } else {
                // 减去中奖奖品数量
                ggljp.setKc(--number);
                return ggljp;
            }
        }else{
            return null;
        }

        // 中奖奖品数量

//        if (number <= 0) {
//            return null;
//        }
//            // 减去中奖奖品数量
//        ggljp.setKc(--number);
//        return  ggljp;


    }

}
